#!/bin/sh
#
# Copyright (C) 2012 Karel Zak <kzak@redhat.com>
#
# Usage:  ko-release-push [<directory> [<version>]]
#
# This script pushs files from <directory>/v<version> to kernel.org. The
# default <directory> is "kernel.org" and the default <version> is the current
# package version.
#
# The <directory>/v<version> files should be generated by ko-release-gen script.
#

cd "$(git rev-parse --show-toplevel)" || {
  echo "error: failed to chdir to git root"
  exit 1
}

[ -f ".version" ] || \
	echo "error: cannot found version file (call make distcheck)"

VERSION=${2:-$(cat .version)}
VERSION_MAJOR=$(echo $VERSION | sed 's/-rc[0-9]//; s/\(.*\..*\)\..*/\1/')
BASEDIR=${1:-"kernel.org"}
DISTDIR="${BASEDIR}/v${VERSION_MAJOR}"

KO_DIR="/pub/linux/utils/util-linux/v${VERSION_MAJOR}"

die() {
	echo $1
	exit 1
}

function push_file {
	local sig="$1"

	case "$sig" in
	*.tar.sign)
		fl=${sig%%.sign}
		if   [ -f ${fl}.xz ];  then fl=${fl}.xz
		elif [ -f ${fl}.gz ];  then fl=${fl}.gz
		elif [ -f ${fl}.bz2 ]; then fl=${fl}.bz2
		else die "cannot found original file for $sig"
		fi
		;;
	*)
		fl=$(echo "$sig" | sed 's/\.sign//')
		;;
	esac

	echo -n " PUSH $fl ..."
	kup put $fl $sig ${KO_DIR}/${fl##${DISTDIR}/}
	echo " OK "
}

[ -d "$DISTDIR" ] || die "$DISTDIR: Not such directory"

FILES=$(find $DISTDIR -name "*.sign" | sort)
DIRS=$(for f in $FILES; do echo $(dirname ${KO_DIR}/${f##${DISTDIR}/}); done | sort -u)

for d in $DIRS; do
	echo -n " MKDIR $d ..."
	kup mkdir $d
	echo " OK "
done

for f in $FILES; do
	push_file $f
done

